package aop;

import handler.MyInvocationHandler;
import org.junit.Test;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

/**
 * @Author 肖地洋
 * @Date 2022/5/4 15:21
 */
public class test {
    @Test
    public void test01(){
//        SomeService someService = new SomeServideImpl();
//        someService.doSome();
//        System.out.println("=====================");
//        someService.doOther();

        //使用jdk的proxy创建代理对象
        //创建目标对象
        SomeService target = new SomeServideImpl();
        //创建InvocationHandler对象
        InvocationHandler handler = new MyInvocationHandler(target);

        //使用proxy创建对象
        SomeService proxy = (SomeService) Proxy.newProxyInstance(target.getClass().getClassLoader(),target.getClass().getInterfaces(),handler);
        //通过代理执行方法，会调用handler的invoke()
        proxy.doOther();
    }
}
